import {
	ElMessage
} from 'element-plus'
import request from '../request/index.js'
class api {

	//----------------数据交互----------------------------
	static 提交方法 = async (方法名, ...参数) => {
		let 返回数据
		let 提交数据 = {
			方法名: 方法名,
			参数: 参数
		}
		await request({
			url: '/linask',
			method: 'POST',
			data: 提交数据
		}).then(res => {
			返回数据 = res.data
		}, err => {
			ElMessage.error("交互错误!" + err)
		})
		return 返回数据
	}

	static 监听ws广播 = async (方法名, 响应方法) => {
		let 服务器地址 = ''
		await request({
			url: '/linask',
			method: 'POST',
			data: { 方法名: "lindk获取服务器地址lindk" }
		}).then(res => {
			服务器地址 = res.data
		}, err => {
			ElMessage.error(方法名 + "->监听ws广播 获取ws地址错误!" + err)
		})
		const ws链接 = new WebSocket(`ws://${服务器地址}/ws`);
		// 当 WebSocket 连接成功时触发
		ws链接.addEventListener('open', (event) => {
			ws链接.send(`{ "方法名": "${方法名}" }`)
		});
		// 当从服务器接收到消息时触发
		ws链接.addEventListener('message', (event) => {
			try{
				let 对象 = JSON.parse(event.data)
				响应方法(对象)
			}catch(error){
				响应方法(event.data)
			}
		});

	}

	static 监听ws标识 = async (方法名, 标识, 响应方法) => {
		let 服务器地址 = ''
		await request({
			url: '/linask',
			method: 'POST',
			data: { 方法名: "lindk获取服务器地址lindk" }
		}).then(res => {
			服务器地址 = res.data
		}, err => {
			ElMessage.error(方法名 + "->监听ws标识 获取ws地址错误!" + err)
		})
		const ws链接 = new WebSocket(`ws://${服务器地址}/ws`);
		// 当 WebSocket 连接成功时触发
		ws链接.addEventListener('open', (event) => {

			ws链接.send(`{ "方法名": "${方法名}","标识":"${标识}" }`)
		});
		// 当从服务器接收到消息时触发
		ws链接.addEventListener('message', (event) => {
			try{
				let 对象 = JSON.parse(event.data)
				响应方法(对象)
			}catch(error){
				响应方法(event.data)
			}
		});

	}

}

export default api
